Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [vb.net] Newtonsoft.Json
Forum - C# / VB.NET - [vb.net] Newtonsoft.Json

Avatar
swet (Normal User)
Pro


Messaggi: 128
Iscritto: 01/01/2009

Segnala al moderatore
Postato alle 20:04
Domenica, 22/09/2013
Ragazzi ciao a tutti, sto cercando di prendere dei dati in formato Json da un sito web, e importarli in un array in vb.net, per fare questo uso la libreria in oggetto e questo codice:
Codice sorgente - presumibilmente VB.NET

  1. Imports System.Net
  2. Imports System.IO
  3. Imports System.Linq
  4. Imports Newtonsoft.Json
  5. Imports Newtonsoft.Json.Linq
  6. Public Class Form1
  7.  
  8.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  9.         Dim request As HttpWebRequest
  10.         Dim response As HttpWebResponse = Nothing
  11.         Dim reader As StreamReader
  12.  
  13.         Try
  14.  
  15.             request = DirectCast(WebRequest.Create("http://miositoweb/connectDb.php"), HttpWebRequest)
  16.             response = DirectCast(request.GetResponse(), HttpWebResponse)
  17.             reader = New StreamReader(response.GetResponseStream())
  18.  
  19.             Dim rawresp As String
  20.             rawresp = reader.ReadToEnd()
  21.  
  22.             Dim jResults As JObject = JObject.Parse(JObject.Parse(rawresp))
  23.             Dim results As List(Of JToken) = jResults.Children().ToList()
  24.  
  25.             For Each item As JProperty In results
  26.                 item.CreateReader()
  27.                 MsgBox(item.Value("img")) ' because my tag in json is img
  28.  
  29.             Next
  30.  
  31.         Catch ex As Exception
  32.             Console.WriteLine(ex.ToString)
  33.             MsgBox(ex.ToString)
  34.         Finally
  35.             If Not response Is Nothing Then response.Close()
  36.         End Try
  37.     End Sub
  38. End Class



ma , quando lo eseguo ricevo questo errore:

Codice sorgente - presumibilmente Python

  1. Eccezione first-chance di tipo 'Newtonsoft.Json.JsonReaderException' in Newtonsoft.Json.dll
  2. Newtonsoft.Json.JsonReaderException: Error reading JObject from JsonReader. Current JsonReader item is not an object: StartArray. Path '', line 1, position 1.
  3.    in Newtonsoft.Json.Linq.JObject.Load(JsonReader reader)
  4.    in Newtonsoft.Json.Linq.JObject.Parse(String json)
  5.    in NHD.Form1.Form1_Load(Object sender, EventArgs e) in C:\Users\Davide\Documents\Visual Studio 2012\Projects\NHD\NHD\Form1.vb:riga 22



Sapete aiutarmi?

Grazie

PM Quote
Avatar
Dedalux (Member)
Pro


Messaggi: 103
Iscritto: 15/12/2010

Segnala al moderatore
Postato alle 20:07
Lunedì, 23/09/2013
Riga 22: perchè fai

Dim jResults As JObject = JObject.Parse(JObject.Parse(rawresp))

2 volte?

l'errore che ti da dice che jResults è = Nothing, forse volevi fare .Load?

Ultima modifica effettuata da Dedalux il 23/09/2013 alle 20:10
PM Quote
Avatar
swet (Normal User)
Pro


Messaggi: 128
Iscritto: 01/01/2009

Segnala al moderatore
Postato alle 10:08
Martedì, 24/09/2013
Ciao, ho sbagliato a postare il sorgente, mi ero accorto di quell' errore e l' ho corretto, ora il problema è alla linea 23:

Codice sorgente - presumibilmente VB.NET

  1. Dim request As HttpWebRequest
  2.         Dim response As HttpWebResponse = Nothing
  3.         Dim reader As StreamReader
  4.         Label1.Text = ("Gli appuntamenti di oggi:  " + Now().Date)
  5.        
  6.         Try
  7.  
  8.             request = DirectCast(WebRequest.Create("http://nhd.altervista.org/connectDb.php"), HttpWebRequest)
  9.             response = DirectCast(request.GetResponse(), HttpWebResponse)
  10.             reader = New StreamReader(response.GetResponseStream())
  11.  
  12.             Dim rawresp As String
  13.             rawresp = reader.ReadToEnd()
  14.  
  15.             Dim jResults As JObject = JObject.Parse(rawresp)
  16.             Dim results As List(Of JToken) = jResults.Children().ToList()
  17.  
  18.             For Each item As JProperty In results
  19.                 item.CreateReader()
  20.                 MsgBox(item.Value("Nome")) ' because my tag in json is nome
  21.  
  22.             Next
  23.  
  24.         Catch ex As Exception
  25.             Console.WriteLine(ex.ToString)
  26.             MsgBox(ex.ToString)
  27.         Finally
  28.             If Not response Is Nothing Then response.Close()
  29.         End Try



l'errore è :

Codice sorgente - presumibilmente Python

  1. Eccezione first-chance di tipo 'Newtonsoft.Json.JsonReaderException' in Newtonsoft.Json.dll
  2. Newtonsoft.Json.JsonReaderException: Error reading JObject from JsonReader. Current JsonReader item is not an object: StartArray. Path '', line 1, position 1.
  3.    in Newtonsoft.Json.Linq.JObject.Load(JsonReader reader)
  4.    in Newtonsoft.Json.Linq.JObject.Parse(String json)
  5.    in NHD.Form1.Form1_Load(Object sender, EventArgs e) in C:\Users\Davide\Documents\Visual Studio 2012\Projects\NHD\NHD\Form1.vb:riga 23


PM Quote